package com.matrix.media.entity.Audio;

import com.alibaba.fastjson.annotation.JSONField;
import com.matrix.media.entity.Effect.Effect;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.List;

/**
 * 音频轨素材AudioTrackClip的范围包括纯音频素材、有音频流的视频素材以及由文字直接转化生成的语音。
 * In、Out、TimelineIn、TimelineOut标记了对素材截取的位置以及素材在时间线中的位置，
 * 如：想把一段视频的5~10s放在时间线15s~20s位置上，则：In=5, Out=10, TimelineIn=15, TimelineOut=20。
 * @Note 音频轨素材为纯音频素材或有音频流的视频素材
 */
@AllArgsConstructor
@NoArgsConstructor
@Data
public class AudioTrackClip {

    /**
     * 素材片段相对于时间线的入点。单位：秒，精确到小数点后4位。如果TimelineIn不填，则会按照素材片段顺序相接的方式自动计算TimelineIn。
     */
    private Float TimelineIn;

    /**
     * 素材片段相对于时间线的出点。单位：秒，精确到小数点后4位。如果TimelineOut不填，则会按照素材片段顺序相接的方式自动计算TimelineOut。
     */
    private Float TimelineOut;

    /**
     * 素材片段的效果列表
     */
    @JSONField(name = "Effects")
    private List<Effect> Effects;

    /**
     * 轨道对齐参数。其他音视频轨道的素材如果设置了相同的ReferenceClipId，则其时间线入出点与当前clip对齐。
     *
     * 参考文档：https://help.aliyun.com/document_detail/2507542.html
     */
    private String ClipId;


    /**
     * 轨道对齐参数。其他音视频轨道的素材如果设置了相同的ClipId，则当前clip的时间线入出点与其他轨道的素材对齐。
     *
     * 参考文档：轨道间素材对齐
     */
    private String ReferenceClipId;

}
